#ifndef ASTAR_H
#define ASTAR_H
#include <Ogre.h>
#include <vector>
#include <deque>
#include "Node.h"

namespace ITP485
{
	class AStar
	{
	public:
		AStar(void);
		~AStar(void);
		
		static std::vector <Node*> FindPath(Node* start, Node* goal);

	private:
		static std::vector <Node*> Search(std::deque < std::vector <Node*>* >* pathList, Node* goal);
		static void QueueFunc(std::deque < std::vector <Node*>* >* pathList);
		static void ExpandNode (std::deque < std::vector <Node*>* >* pathList);
		static void QuickSortPathList(std::deque < std::vector <Node*>* >* pathList, int left, int right, Node* goal);
		static int GetFVal(std::vector < Node*> * path, Node* goal)
	};
}		// end of namespace
#endif